package com.eye.catcher.service.generate.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.eye.catcher.entity.TLogDaLogin;
import com.eye.catcher.log.param.LogDto;
import com.eye.catcher.log.param.LogPage;
import com.eye.catcher.mapper.TLogDaLoginMapper;
import com.eye.catcher.service.ITLogDaLoginService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author huzhiwei
 * @since 2022-02-10
 */
@Slf4j
@Service
public class TLogDaLoginServiceImpl extends ServiceImpl<TLogDaLoginMapper, TLogDaLogin> implements ITLogDaLoginService {

    @Override
    public void saveLoginLog(LogDto logDto) {

        this.save(TLogDaLogin.builder()
                .loginName(logDto.getLoginName())
                .userId(logDto.getUserId())
                .userName(logDto.getUserName())
                .orgId(logDto.getOrgId())
                .orgName(logDto.getOrgName())
                .moduleCode(logDto.getModuleCode())
                .moduleName(logDto.getModuleName())
                .systemCode(logDto.getSystemCode())
                .systemName(logDto.getSystemName())
                .methodCode(logDto.getMethodCode())
                .methodName(logDto.getMethodName())
                .operationCode(logDto.getOperationCode())
                .operationName(logDto.getOperationName())
                .param(logDto.getParam())
                .remark(logDto.getRemark())
                .time(logDto.getTime())
                .runState(logDto.getRunState())
                .returnText(logDto.getReturnText())
                .build());
    }

    @Override
    public Object getPageList(LogPage logPage) {
        Page<TLogDaLogin> page=new Page<>(logPage.getPage().getPageNum(),logPage.getPage().getPageSize());
        QueryWrapper<TLogDaLogin> wrapper = Wrappers.query();
        //组装查询条件
        if(StringUtils.isNotEmpty(logPage.getLog().getLoginName())){
            wrapper.eq("LOGIN_NAME",logPage.getLog().getLoginName());
        }
        if(StringUtils.isNotEmpty(logPage.getLog().getUserId())){
            wrapper.eq("USER_ID",logPage.getLog().getUserId());
        }
        if(StringUtils.isNotEmpty(logPage.getLog().getUserName())){
            wrapper.like("USER_NAME",logPage.getLog().getUserName());
        }
        if(StringUtils.isNotEmpty(logPage.getLog().getModuleCode())){
            wrapper.eq("MODULE_CODE",logPage.getLog().getModuleCode());
        }
        if(StringUtils.isNotEmpty(logPage.getLog().getModuleName())){
            wrapper.like("MODULE_NAME",logPage.getLog().getModuleName());
        }
        if(StringUtils.isNotEmpty(logPage.getLog().getMethodCode())){
            wrapper.eq("METHOD_CODE",logPage.getLog().getMethodCode());
        }
        if(StringUtils.isNotEmpty(logPage.getLog().getMethodName())){
            wrapper.like("METHOD_NAME",logPage.getLog().getMethodName());
        }
        if(StringUtils.isNotEmpty(logPage.getLog().getOperationCode())){
            wrapper.eq("OPERATION_CODE",logPage.getLog().getOperationCode());
        }
        if(StringUtils.isNotEmpty(logPage.getLog().getOperationName())){
            wrapper.like("OPERATION_NAME",logPage.getLog().getOperationName());
        }

        wrapper.orderByDesc(" TIME ");
        //list
        IPage<TLogDaLogin> returnPage = this.page(page, wrapper);
        //总数
        returnPage.setTotal(this.count(wrapper));
        return returnPage;
    }
}
